Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
In networking, a session is an interactive information interchange between two or more communicating devices (e.g., a server and a client). A session is typically stateful, meaning that at least one of the communicating parts needs to save information about the session history in order to be able to communicate, as opposed to stateless communication, where the communication includes independent requests with responses. Client-side sessions typically use cookies to maintain state without storing data on the server. When presenting a dynamic web page, the server sends the current state data to the client in the form of a cookie. The client saves the cookie and sends it back to the server with a new request. The server uses the data to remember the state of the application for that specific client and generate an appropriate response.
The session can be initiated using a variety of protocols available for network communications. For example, Internet browsers typically use the Hypertext Transport Protocol (HTTP) as the primary means of browsing the World Wide Web. Other protocols can be used. For example, some applications, such as email applications, use a remote procedure call (RPC) as an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another computer. Thus, using RPC, the programmer writes the same code whether the subroutine is local to the executing program, or remote.
Adapting RPC-based applications to a cloud environment can be challenging. For example, some applications are designed to communicate with a single server, while a cloud environment has potentially thousands of servers and is designed to scale to any desired size. Additionally, RPC communications can leave a session open for extended periods, which ties up network resources unnecessarily. In a specific example, some applications set up two HTTP connections or channels: one for outgoing requests to the server, and one for incoming responses from the server. In particular, existing RPC connections can use a two-channel half-duplex HTTP connection. Each channel is a non-standard ‘RPC_IN_DATA’ or ‘RPC_OUT_DATA’ HTTP method, and the Content-Length is always 1 GB. Such a structure for a cloud-based environment is inefficient.